package com.kh.rationaldrugreview.controller;

import com.kh.rationaldrugreview.entity.ReviewResult;
import com.kh.rationaldrugreview.service.DrugReviewService;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;

/**
 * 药品审查控制器
 * 提供处方药品的合理性审查功能，包括相互作用检测、禁忌症检查、重复用药识别等
 * 
 * @author Claude Code
 * @version 1.0
 */
@RestController
@RequestMapping("/api/review")
@RequiredArgsConstructor
public class DrugReviewController {
    
    private final DrugReviewService drugReviewService;
    
    /**
     * 对指定处方进行合理用药审查
     * 执行以下审查项目：
     * 1. 药物相互作用检查
     * 2. 禁忌症验证
     * 3. 重复用药检测
     * 4. 年龄限制审查
     * 5. 剂量验证
     * 
     * @param prescriptionId 处方ID
     * @return 审查结果列表，包含发现的所有问题和建议
     */
    @PostMapping("/prescription/{prescriptionId}")
    public ResponseEntity<List<ReviewResult>> reviewPrescription(@PathVariable Long prescriptionId) {
        try {
            List<ReviewResult> reviewResults = drugReviewService.reviewPrescription(prescriptionId);
            return ResponseEntity.ok(reviewResults);
        } catch (RuntimeException e) {
            return ResponseEntity.badRequest().build();
        }
    }
    
    /**
     * 批量审查多个处方
     * 对传入的处方ID列表逐一进行合理用药审查
     * 
     * @param prescriptionIds 处方ID列表
     * @return 批量审查的处理结果统计信息
     */
    @PostMapping("/batch")
    public ResponseEntity<String> batchReviewPrescriptions(@RequestBody List<Long> prescriptionIds) {
        try {
            int processedCount = 0;
            for (Long prescriptionId : prescriptionIds) {
                try {
                    drugReviewService.reviewPrescription(prescriptionId);
                    processedCount++;
                } catch (Exception e) {
                    // 记录错误但继续处理其他处方
                }
            }
            return ResponseEntity.ok(String.format("成功处理 %d 个处方，共 %d 个处方", 
                processedCount, prescriptionIds.size()));
        } catch (Exception e) {
            return ResponseEntity.badRequest().body("批量审查失败: " + e.getMessage());
        }
    }
}